HTTP 1.0 和 2.0 的区别
1. 连接管理
特性 | HTTP/1.0 | HTTP/2.0 |
---|
连接复用 | 每个请求需单独建立 TCP 连接(短连接) | 多路复用:一个 TCP 连接并行处理多个请求 |
队头阻塞 | 存在(请求按顺序处理,前一个阻塞后续请求) | 无队头阻塞(请求 / 响应可乱序处理) |
示例:
加载一个包含 10 张图片的页面:
- HTTP/1.0:需建立 10 次 TCP 连接(或有限并发,如浏览器默认 6 个)。
- HTTP/2.0:仅需 1 次 TCP 连接,所有图片并行传输。
2. 数据传输效率
特性 | HTTP/1.0 | HTTP/2.0 |
---|
数据格式 | 文本协议(可读性高,解析效率低) | 二进制协议(解析高效,错误率低) |
头部压缩 | 无压缩,重复头部导致冗余 | HPACK 压缩(减少 50%~90% 头部大小) |
优先级控制 | 无 | 可标记请求优先级(优先加载关键资源) |
示例:
请求头部包含 Cookie
和 User-Agent
:
- HTTP/1.0:每次请求重复发送完整头部。
- HTTP/2.0:仅首次发送完整头部,后续用索引标识。
3. 服务器推送(Server Push)
特性 | HTTP/1.0 | HTTP/2.0 |
---|
主动推送资源 | 不支持 | 支持(服务器可主动推送 CSS/JS/ 图片等资源) |
场景:
用户请求 index.html
,服务器可同时推送 style.css
,减少往返延迟。
4. 流控制与错误处理
特性 | HTTP/1.0 | HTTP/2.0 |
---|
流控制 | 依赖 TCP 的流控 | 基于流的独立控制(精细管理带宽) |
错误恢复 | 错误导致整个连接中断 | 单个流错误不影响其他流 |
5. 安全性
特性 | HTTP/1.0 | HTTP/2.0 |
---|
加密要求 | 明文传输(HTTP)或可选加密(HTTPS) | 主流实现(如浏览器)要求基于 HTTPS |
总结:HTTP/2.0 的核心优势
- 更快的加载速度:多路复用和头部压缩减少延迟。
- 更高的带宽利用率:二进制协议和优先级控制优化资源分配。
- 更好的用户体验:服务器推送提前加载关键资源。
何时选择 HTTP/2.0?
- 现代 Web 应用(尤其是 SPA、媒体网站)
- 需要高并发请求的场景(如实时聊天、高频 API 调用)
- 资源依赖复杂的页面(多 CSS/JS/ 图片)